package com.pds.web.company.service;

import com.pds.web.company.domain.PdsCompanyStationInfo;
import com.pds.web.company.domain.PdsCompanyStationOps;
import com.pds.web.company.domain.PdsCompanyStationOpsDevice;

import java.util.List;
import java.util.Map;

/**
 * 企业站房管理
 */
public interface PdsCompanyStationService {
    /**
     * 添加企业站房，无id新增，有id修改
     * @param info
     */
    PdsCompanyStationInfo add(PdsCompanyStationInfo info);

    /**
     * 添加企业站房运维信息
     * @param opsInfo
     */
    void addOpsInfo(PdsCompanyStationOps opsInfo);

    /**
     * 查询企业站房列表
     * @param params 搜索条件
     *            - companyName 企业名称/MN号/站房名称
     *            - supervisionLevel 监管级别:1重点、2非重点
     *            - area 区域id
     *            - emissionType 排放类型:1一般废水、2污水处理、3一般废气、4VOCs废气、5垃圾焚烧
     *            - industry 所属行业
     *            - opsOrganizationId 运维机构
     */
    Map getCompanyStationList(Map params);

    /**
     * 删除站房
     * @param id 站房id
     * @return
     */
    void deleteStation(Long id);

    /**
     * 添加企业站房运维仪器信息
     * @param device
     */
    void addDevice(PdsCompanyStationOpsDevice device);

    /**
     * 查询站房详细
     * @param stationId 站房id
     * @return
     */
    Map getDetail(Long stationId);

    /**
     * 查询仪器详情
     * @param id 仪器id
     * @return
     */
    PdsCompanyStationOpsDevice getDeviceDetail(Long id);

    /**
     * 查询站房运维表单列表
     * @param map
     * @return
     */
    List<Map> getOpsFormList(Map map);

    /**
     * 站房运维统计
     * @param stationId 站房id
     * @param type 类型：month本月、year本年，其他为全部
     */
    List<Map> getStationOpsCount(Long stationId, String type);

    /**
     * 环保局给运维表单评分
     * @param id  运维表单id
     * @param score 评分
     * @return
     */
    void epbScore(Long id, Double score);

    /**
     * 查询指定站房的运维机构信息
     * @param stationId
     * @return
     */
    List<Map> getStationOpsOrganization(Long stationId);

    /**
     * 查询指定站房的运维工程师信息
     * @param stationId
     * @param organizationId
     * @return
     */
    List<Map> getStationOpsEngineer(Long stationId, Long organizationId);
}
